/**
 * 组合模式
 */
/**
 * @author shuai.zuo
 * @desc
 * 将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和使用具有一致性。

 想到Composite就应该想到树形结构图。组合体内这些对象都有共同接口,当组合体一个对象的方法被调用执行时，
 Composite将遍历(Iterator)整个树形结构,寻找同样包含这个方法的对象并实现调用执行。可以用牵一动百来形容。 

 Composite模式好处： 
 1.使客户端调用简单，客户端可以一致的使用组合结构或其中单个对象，用户就不必关系自己处理的是单个对象还是整个组合结构，这就简化了客户端代码。 
 2.更容易在组合体内加入对象部件. 客户端不必因为加入了新的对象部件而更改代码 

 .什么情况下使用组合模式:
 引用大话设计模式的片段：
 “当发现需求中是体现部分与整体层次结构时，以及你希望用户可以忽略组合对象与单个对象的不同，
 统一地使用组合结构中的所有对象时，就应该考虑组合模式了。”
 
 通过实现组合模式，调用者对组合对象的操作与对单一对象的操作具有一致性。
 调用者不用关心这是组合对象还是文件，也不用关心组合对象内部的具体结构，就可以调用相关方法，实现功能。
 * @date 2015年3月9日
 */
package desgin.pattern.structure.composite;